package cn.edu.sgu.www.mhxysy.service.chongwu;

import cn.edu.sgu.www.mhxysy.dto.chongwu.ChongwuDTO;
import cn.edu.sgu.www.mhxysy.dto.zuoqi.ZuoqiChongwuDTO;
import cn.edu.sgu.www.mhxysy.entity.chongwu.Chongwu;
import cn.edu.sgu.www.mhxysy.pager.chongwu.ChongwuPager;
import cn.edu.sgu.www.mhxysy.vo.chongwu.ChongwuVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author 沐雨橙风ιε
 * @version 1.0
 */
public interface ChongwuService {

	/**
	 * 计算宠物评分
	 * @param chongwuId 宠物ID
	 */
	Integer compute(String chongwuId);

	/**
	 * 更换统御
	 * @param zuoqiChongwuDTO 统御信息
	 */
	void change(ZuoqiChongwuDTO zuoqiChongwuDTO);

	/**
	 * 统御宠物
	 * @param zuoqiChongwuDTO 统御信息
	 */
	@Transactional(rollbackFor = Exception.class)
	void tongyu(ZuoqiChongwuDTO zuoqiChongwuDTO);

	/**
	 * 添加宠物
	 * @param chongwuDTO 宠物信息
	 */
	@Transactional(rollbackFor = Exception.class)
	void insert(ChongwuDTO chongwuDTO);

	/**
	 * 通过ID删除宠物
	 * @param chongwuId 宠物ID
	 */
	@Transactional(rollbackFor = Exception.class)
	void deleteById(String chongwuId);

	/**
	 * 通过ID修改宠物信息
	 * @param chongwuDTO 宠物信息
	 */
	void updateById(ChongwuDTO chongwuDTO);

	/**
	 * 查询全部宠物
	 * @return List<Chongwu>
	 */
	List<Chongwu> selectAll();

	/**
	 * 通过ID查询宠物信息
	 * @param id 宠物ID
	 * @return Chongwu
	 */
	Chongwu selectById(String id);

	/**
	 * 通过角色ID查询宠物信息
	 * @param roleId 角色ID
	 * @return List<Chongwu>
	 */
	List<Chongwu> selectByRoleId(String roleId);

	/**
	 * 分页查询宠物列表
	 * @param pager 分页参数
	 * @return Page<Chongwu>
	 */
	Page<Chongwu> selectByPage(ChongwuPager pager);

	/**
	 * 通过坐骑ID查询宠物信息
	 * @param zuoqiId 坐骑ID
	 * @return List<ChongwuVO>
	 */
    List<ChongwuVO> selectByZuoqiId(String zuoqiId);
}